/**
 * 拿到了一个扁平化数组，转化为树形结构
 * [{id:1,name:"集团",children:[{}]}]
 * rootId = null
 * { id: 1, name: "集团", pid: null },
 */
let depts = [
    { id: 1, name: "集团", pid: null },
    { id: 2, name: "子公司", pid: 1 },
    { id: 3, name: "财务部门", pid: 2 }
]

/**
 * 组装数据
 */
function fn(data,rootId=null){
    //存放我们遍历完成后，组装数组
    const children = []
    data.forEach((item)=>{
        if(item.pid == rootId ){
            children.push(item)
            item.children = fn(data,item.id)
        }
    })
    return children
}
//children = []
const res = fn(depts);
console.log(res);


/**
 * const res = 100 fn(100)
 * const res2 = 99 fn(100-1)
 * 
 * fn(n)+fn(n-1)+fn(n-2)+fn(1)
 * 
 * 第一次调用：10+fn(10-1)
 * 第二次调用：10+fn(9)+fn(9-1)
 *
 */
// function fn(n){
//     if(n==1){
//         return 1
//     }else{
//         //fn(100-1)
//         //fn(99-1)
//         return n+fn(n-1)
//     }
// }

